/掌握 Java 的面向對象編程(OOP)
/計算數據結構和算法。
目的:
/熟悉 Java 中的面向對象編程概念(如類、對象、繼承、多態)。
/理解和應用基本的數據結構(如數組、集合)。
/掌握基本的文件操作來保存和讀取數據。
程式設計:
設計並實現一個簡易銀行系統,該系統允許用戶創建帳戶、查詢餘額、存款、取款、以及查看交易記錄。
1. 設計類和數據結構:
1)設計 Account 類來表示銀行帳戶,包括帳戶號、持有人姓名、餘額等屬性,並提供存款、取款、查詢餘額等方法。
2)設計 Transaction 類來表示一次交易,包含交易類型、金額、時間等屬性。
3)設計 Bank 類來管理多個帳戶,並能夠查找、創建、刪除帳戶,以及保存和讀取帳戶信息。
2.編寫代碼:
import java.util.ArrayList;
import java.util.Scanner;
// 交易類
class Transaction {
private String type;
private double amount;
private String date;
public Transaction(String type, double amount, String date) {
this.type = type;
this.amount = amount;
this.date = date;
}
@Override
public String toString() {
return "交易類型:" + type + ", 金額:" + amount + ", 日期:" + date;
}
}
// 帳戶類
class Account {
private String accountNumber;
private String holderName;
private double balance;
private ArrayList transactions;
public Account(String accountNumber, String holderName) {
this.accountNumber = accountNumber;
this.holderName = holderName;
this.balance = 0.0;
this.transactions = new ArrayList<>();
}
public void deposit(double amount) {
balance += amount;
transactions.add(new Transaction("存款", amount, "2024-08-16"));
}
public void withdraw(double amount) {
if (amount > balance) {
System.out.println("餘額不足!");
} else {
balance -= amount;
transactions.add(new Transaction("取款", amount, "2024-08-16"));
}
}
public void checkBalance() {
System.out.println("當前餘額:" + balance);
}
public void printTransactions() {
for (Transaction transaction : transactions) {
System.out.println(transaction);
}
}
}
// 銀行類
class Bank {
private ArrayList accounts;
public Bank() {
this.accounts = new ArrayList<>();
}
public void addAccount(String accountNumber, String holderName) {
accounts.add(new Account(accountNumber, holderName));
}
public Account findAccount(String accountNumber) {
for (Account account : accounts) {
if (accountNumber.equals(accountNumber)) {
return account;
}
}
return null;
}
}
public class BankSystem {
public static void main(String[] args) {
Bank bank = new Bank();
Scanner scanner = new Scanner(System.in);
// 示例操作
bank.addAccount("123456", "張三");
Account account = bank.findAccount("123456");
if (account != null) {
account.deposit(500.0);
account.withdraw(200.0);
account.checkBalance();
account.printTransactions();
}
}
}
3.擴展實驗
1)文件操作:增加將帳戶信息和交易記錄保存到文件中的功能,並能夠從文件中讀取這些信息。
2)異常處理:增加異常處理來處理用戶輸入錯誤或文件讀寫錯誤。
3)多線程:嘗試將銀行系統設計成支持多線程操作的模式,讓多個用戶可以同時訪問和操作銀行帳戶。
4)測試程序:
創建多個帳戶,進行各種操作並檢查結果是否符合預期。
測試在各種異常情況下(如餘額不足、無效帳戶號等)程序的表現。
測試文件讀寫功能,確認程序能夠正確保存和讀取帳戶信息。